package org.patterns.behavior.iterator;


import java.util.List;

/**
 * 抽象聚合类，用于管理对象集合并提供基础操作方法，包含对象集合的存储、添加、删除及迭代器创建功能
 */
public abstract class AbstractObjectList {
    /** 存储目标对象的集合，使用protected修饰便于子类访问 */
    protected List<Object> objects;

    /**
     * 构造函数，初始化对象集合
     * @param objects 用于初始化的对象集合，不可为null
     */
    public AbstractObjectList(List<Object> objects) {
        this.objects = objects;
    }

    /**
     * 向集合中添加新对象
     * @param obj 需要添加的目标对象，可为任意类型
     */
    public void addObject(Object obj) {
        this.objects.add(obj);
    }

    /**
     * 从集合中移除指定对象
     * @param obj 需要移除的目标对象
     */
    public void removeObject(Object obj) {
        this.objects.remove(obj);
    }

    /**
     * 获取当前存储的对象集合
     * @return 返回当前管理的对象集合的引用
     */
    public List<Object> getObjects() {
        return this.objects;
    }

    /**
     * 抽象工厂方法，用于创建与当前集合对应的迭代器
     * 需要子类实现具体的迭代器创建逻辑
     * @return 返回实现AbstractIterator接口的迭代器对象
     */
    public abstract AbstractIterator createIterator();
}
